package org.amphiprion.montrictracv4.preference;

import org.amphiprion.montrictracv4.R;

import android.content.Context;
import android.preference.CheckBoxPreference;
import android.util.AttributeSet;
import android.view.View;
import android.widget.TextView;

/**
 * Check box preference with check box replaced by radio button.
 * 
 * Functionally speaking, it's actually a CheckBoxPreference. We only modified
 * the widget to RadioButton to make it "look like" a RadioButtonPreference.
 * 
 * In other words, there's no "RadioButtonPreferenceGroup" in this
 * implementation. When you check one RadioButtonPreference, if you want to
 * uncheck all the other preferences, you should do that by code yourself.
 */
public class RadioButtonPreference extends CheckBoxPreference {
	public interface OnClickListener {
		public abstract void onRadioButtonClicked(RadioButtonPreference emiter);
	}

	private OnClickListener mListener = null;

	public RadioButtonPreference(Context context, AttributeSet attrs,
			int defStyle) {
		super(context, attrs, defStyle);
		setWidgetLayoutResource(R.layout.preference_widget_radiobutton);
	}

	public RadioButtonPreference(Context context, AttributeSet attrs) {
		this(context, attrs, R.attr.checkBoxPreferenceStyle);
	}

	public RadioButtonPreference(Context context) {
		this(context, null);
	}

	void setOnClickListener(OnClickListener listener) {
		mListener = listener;
	}

	@Override
	public void onClick() {
		if (mListener != null) {
			mListener.onRadioButtonClicked(this);
		}
	}

	@Override
	protected void onBindView(View view) {
		super.onBindView(view);

		TextView title = (TextView) view.findViewById(android.R.id.title);
		if (title != null) {
			title.setSingleLine(false);
			title.setMaxLines(3);
		}
	}
}